#ifndef UI_HPP
#define	UI_HPP

#include "hibakodok.hpp"
#include <string>

/**
 * Bináris MI
 */
#define MI_TIPUS_BINARIS 0
/**
 * Megosztott könyvtár MI
 */
#define MI_TIPUS_KONYVTAR 1
/**
 * Felhasználó által vezérelt MI
 */
#define MI_TIPUS_FELHASZNALO 2

using namespace std;

/**
 * Felhasználói felületet kezelő osztály
 */
class UI {
protected:
    /**
     * Pálya szélessége
     */
    static int szelesseg;
    /**
     * Pálya magassága
     */
    static int magassag;
    /**
     * MI-k nevét tároló tömb
     */
    static string mi[2];
    /**
     * MI-k típusát tároló tömb
     */
    static int miTipus[2];
public:

    /**
     * Beolvassa és értelmezi a program paramétereit
     * @param argc u.a. mint a main-ben
     * @param argv u.a. mint a main-ben
     * @return true, ha minden OK, hamis, ha probléma van
     */
    static bool programParameterek(int argc, char** argv);

    /**
     * A játék végét kezelő függvény
     * @param allapot A játék végeredménye
     * @param indok A végeredmény indoklása
     */
    static void vege(int allapot, int indok);

    /**
     * MI fájlnevét adja vissza
     * @param i MI sorszáma
     * @return az MI fájlneve
     */
    static string getMI(int i) {
        if (i == 0 || i == 1) {
            return mi[i];
        }
        throw UI_NINCS_ILYEN_MI;
    }

    /**
     * Pálya magasságát adja vissza
     * @return pálya magassága
     */
    static int getMagassag() {
        return magassag;
    }

    /**
     * Pálya szélességét adja vissza
     * @return pálya szélessége
     */
    static int getSzelesseg() {
        return szelesseg;
    }
};

#endif	/* UI_HPP */
